package main

import (
	"flag"
	"fmt"
	"os"

	"supershare/backend/models"

	"github.com/beego/beego/v2/client/orm"
	_ "github.com/beego/beego/v2/server/web"
)

func main() {
	// 解析命令行参数
	username := flag.String("username", "admin", "超级管理员用户名")
	password := flag.String("password", "adminadmin", "超级管理员密码")
	help := flag.Bool("help", false, "显示帮助信息")

	// 解析命令行参数
	flag.Parse()

	// 显示帮助信息
	if *help {
		fmt.Println("初始化超级管理员账号工具")
		fmt.Println("用法: init_admin [选项]")
		flag.PrintDefaults()
		return
	}

	// 初始化超级管理员账号
	fmt.Println("开始初始化超级管理员账号...")

	// 同步数据库表结构
	fmt.Println("正在同步数据库表结构...")
	// 第一个参数是数据库别名，第二个参数是是否强制更新，第三个参数是是否显示执行的SQL
	err := orm.RunSyncdb("default", false, true)
	if err != nil {
		fmt.Printf("同步数据库表结构失败: %v\n", err)
		os.Exit(1)
	}
	fmt.Println("数据库表结构同步完成")

	// 检查是否已存在admin账号
	existAdmin, err := models.GetAdminByUsername(*username)
	if err == nil && existAdmin != nil {
		// 已存在admin账号
		fmt.Printf("超级管理员账号 '%s' 已存在，无需创建\n", *username)
		return
	}

	// 创建超级管理员账号
	admin := &models.Admin{
		Username: *username,
		RealName: "超级管理员",
		Status:   1,
	}

	// 设置密码
	err = admin.SetPassword(*password)
	if err != nil {
		fmt.Printf("设置密码失败: %v\n", err)
		os.Exit(1)
	}

	// 保存管理员信息
	_, err = models.CreateAdmin(admin)
	if err != nil {
		fmt.Printf("创建超级管理员失败: %v\n", err)
		os.Exit(1)
	}

	fmt.Printf("超级管理员账号 '%s' 创建成功，密码为 '%s'\n", *username, *password)
}
